/**
 * ReportGear(2011)
 */
package com.reportgear.core.data.model;

import java.util.Collections;
import java.util.HashMap;
import java.util.Map;

import net.abbp.core.util.NumberUtils;
import net.abbp.core.util.StringUtils;

/**
 * 薪酬数据对象,存储XML查询出来的结果,只有少量数据时使用
 * 
 * @version 1.0 2011-5-26
 * @author <a herf="lexloo@gmail.com">lexloo</a>
 * @since Report 1.0
 */
public class SalaryDataObject {
    private Map<String, Object> values = new HashMap<String, Object>();

    /**
     * 设置字段的值
     * 
     * @param field
     *            字段名
     * @param value
     *            字段值
     */
    public void setValue(String field, Object value) {
        this.values.put(field, value);
    }

    /**
     * 获取指定字段的值
     * 
     * @param field
     *            字段名
     * @return 值(String)
     */
    public String getString(String field) {
        return StringUtils.convertToString(this.values.get(field));
    }

    /**
     * 获取指定字段的值
     * 
     * @param field
     *            字段名
     * @return 值(int)
     */
    public int getInt(String field) {
        return NumberUtils.convertToInteger(this.values.get(field), 0);
    }

    /**
     * 获取指定字段的值
     * 
     * @param field
     *            字段名
     * @return 值(long)
     */
    public long getLong(String field) {
        return NumberUtils.convertToLong(this.values.get(field), 0L);
    }

    /**
     * 获取指定字段的值
     * 
     * @param field
     *            字段名
     * @return 值(double)
     */
    public double getDouble(String field) {
        return NumberUtils.convertToDouble(this.values.get(field), 0.0D);
    }

    /**
     * 获取所有值
     * 
     * @return 值
     */
    public Map<String, Object> getValues() {
        return Collections.unmodifiableMap(values);
    }
}
